﻿using MongoDB.Bson.Serialization.Attributes;
using System;
using System.Collections.Generic;

namespace Sustainalytics.Entities.RiskRatings
{
    [BsonIgnoreExtraElements]
    public class RiskRatingMaterialEsgIssueBase
    {
        public string Name { get; set; }
        public string Description { get; set; }
        public Timestamped<string> MeiCode { get; set; }
        public int ExternalId { get; set; }
        public MaterialIssueType Type { get; set; }
        public DateTime? TypeTimestamp { get; set; }
        public Timestamped<int> SortKey { get; set; }
        public Timestamped<bool> IsMain { get; set; }

        public Timestamped<double> DefaultWeight { get; set; }
        public Timestamped<double> FinalWeight { get; set; }
        public Timestamped<double> BetaFactor { get; set; }
        public Timestamped<double> FinalBetaFactor { get; set; }
        public Timestamped<double> ManageableRiskFactorPercentile { get; set; }
        public Timestamped<double> SubIndustryExposureScore { get; set; }
        public Timestamped<double> ExcessExposure { get; set; }

        public ManagementRisk ManagementRisk { get; set; }

        public IEnumerable<ComprehensiveRiskRatingIndicator> Indicators { get; set; }

        public Timestamped<string> Narrative { get; set; }
        public Timestamped<string> AnalystViewComment { get; set; }
        public Timestamped<string> ExposureComment { get; set; }
        public Timestamped<string> ManagementComment { get; set; }
        public Timestamped<string> AnalystViewExposureAssessment { get; set; }
        public Timestamped<string> AnalystViewManagementAssessment { get; set; }
        public Timestamped<string> AnalystViewConsolidated { get; set; }

        public RiskRatingCluster Cluster { get; set; }
        public Timestamped<RiskRatingClusterAssessment> Assessment { get; set; }
        public Timestamped<ExposureClusterAssessment> ExposureCluster { get; set; }
        public Timestamped<ManagementClusterAssessment> ManagementCluster { get; set; }
        public Timestamped<ManageableClusterAssessment> ManageableCluster { get; set; }
    }
}
